package com.quanquan.management.service;

import DTO.PageDTO;
import DTO.store.StoreInfoDTO;
import com.alibaba.fastjson.JSONObject;
import com.quanquan.management.dto.StoreDTO;
import com.quanquan.management.request.StoreRequestBody;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import request.PageRequestBody;
import utils.Request;

/**
 * @author gongzhou
 * @title: ModuleService
 * @projectName SpringCloud
 * @description: TODO
 * @date 2019/3/289:33
 */
@Service
public class StoreService {

    @Value("${module-url.storeUrl}")
    private String storeUrl;

    public PageDTO<StoreDTO> listStore(PageRequestBody pageRequestBody) {
        String json = Request.postJson(storeUrl + "store/query", pageRequestBody);
        JSONObject jsonObject = JSONObject.parseObject(json);
        Integer resCode = jsonObject.getInteger("resCode");
        PageDTO<StoreDTO> pageDTO = null;
        if (0 == resCode) {
            PageDTO data = jsonObject.getJSONObject("data").toJavaObject(PageDTO.class);
            return data;
        }
        return pageDTO;
    }

    public boolean delete(String id) {
        StoreRequestBody requestBody = new StoreRequestBody();
        requestBody.setId(id);
        String json = Request.postJson(storeUrl + "store/remove_store", requestBody);
        JSONObject jsonObject = JSONObject.parseObject(json);
        Integer resCode = jsonObject.getInteger("resCode");
        return resCode == 0;
    }

    public StoreDTO findById(String id) {
        StoreRequestBody requestBody = new StoreRequestBody();
        requestBody.setId(id);
        requestBody.setType(0);
        String json = Request.postJson(storeUrl + "store/query_by_id", requestBody);
        JSONObject jsonObject = JSONObject.parseObject(json);
        Integer resCode = jsonObject.getInteger("resCode");
        StoreDTO storeDTO = null;
        if (0 == resCode) {
            JSONObject data = jsonObject.getJSONObject("data");
            storeDTO = data.toJavaObject(StoreDTO.class);
        }
        return storeDTO;
    }

    public boolean add(StoreRequestBody requestBody) {
        if (null == requestBody) {
            return false;
        }
        String json = Request.postJson(storeUrl + "store/add", requestBody);
        JSONObject jsonObject = JSONObject.parseObject(json);
        Integer resCode = jsonObject.getInteger("resCode");
        StoreDTO storeDTO = null;
        if (0 == resCode) {
                return true;

        }
        return false;
    }

    public boolean update(StoreRequestBody requestBody) {
        if (null == requestBody) {
            return false;
        }
        String json = Request.postJson(storeUrl + "store/update_store", requestBody);
        JSONObject jsonObject = JSONObject.parseObject(json);
        Integer resCode = jsonObject.getInteger("resCode");
        if (0 == resCode) {
            return true;
        }
        return false;
    }

    public StoreInfoDTO list(){
        String json = Request.postJson(storeUrl + "store/list",null);
        JSONObject jsonObject = JSONObject.parseObject(json);
        Integer resCode = jsonObject.getInteger("resCode");
        StoreInfoDTO storeInfoDTO = null;
        if (0 == resCode) {
            JSONObject data = jsonObject.getJSONObject("data");
            storeInfoDTO = data.toJavaObject(StoreInfoDTO.class);
        }
        return storeInfoDTO;
    }

}
